package Day_0226.ProxyPattern;

/**
 * @author zxc
 * @date 2023/02/26 21:43
 **/
public class StaticProxy {
    public static void main(String[] args) {
        /**
         * 谈一谈对于静态代理的理解
         * ===》
         * （1）由程序员创建或工具生成代理类的源码，再编译代理类。
         * （2）所谓静态也就是，在程序运行前就已经存在代理类的字节码文件，代理类和委托类的关系在运行前就确定了。
         * （3）静态代理的目标业务类，可以是接口/类;
         * ===>
         *  静态代理对象，就是在原本对象的基础上对其进行功能扩展;
         *  （其在程序运行之前，就已经确定了所要代理的对象，所以直接具体地实现 静态代理对象部分代码）
         *
         */
    }
}
//接口类
class UserDao{
    public void save() {
        System.out.println("保存数据方法");
    }
}
//代理类
class UserDaoProxy extends UserDao {
    private UserDao userDao;
    public UserDaoProxy(UserDao userDao) {
        this.userDao = userDao;
    }
    public void save() {
        System.out.println("开启事物...");
        userDao.save();
        System.out.println("关闭事物...");
    }
}
//添加完静态代理的测试类
class Test{
    public static void main(String[] args) {
        UserDao userDao = new UserDao();
        UserDaoProxy userDaoProxy = new UserDaoProxy(userDao);
        userDaoProxy.save();
    }
}
